home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol025 / life.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-11  |  2.6 KB  |  78 lines

  1. 10 REM  GAME OF LIFE
  2. 20 REM  ORGANISMS EXIST IN THE FORM OF COUNTERS ON A CHECKERBOARD
  3. 30 REM EACH CELL HAS 8 NEIGHBORING CELLS, 4 ADJACENT ORTHOGONALLY, 4 ADJACENT          DIAGONALLY.
  4. 40 REM THE RULES: 1. SURVIVORS. EVERY COUNTER WITH 2 OR 3 NEIGHBORING COUNTERS         SURVIVES FOR THE NEXT GENERATION.2. DEATHS. EACH COUNTER WITH 4 OR MORE         NEIGHBORS DIES FROM OVERPOPULATION. EVERY COUNTER WITH 1 OR < NEIGHBORS
  5. 50 REM  DIES FROM ISOLATION. 3.BIRTHS. EACH EMPTY CELL ADJACENT TO EXACTLY 3            NEIGHBORS IS A BIRTH CELL. A COUNTER IS PLACED ON IT AT THE NEXT MOVE.
  6. 60 REM EXAMPLE: ENTER PATTERN: ?.  ***                                                                         ?. *  *                                                                         ?.*   *
  7. 70 KEY OFF
  8. 80 CLS
  9. 90 PRINT TAB(34);"LIFE":PRINT
  10. 100 PRINT TAB(28);"(CREATIVE COMPUTING)"
  11. 110 PRINT:PRINT:PRINT
  12. 120 PRINT "TO CREATE THE ORGANISM, TYPE IN A PATTERN OF `*' ON EACH LINE. TO ENTER LEADING BLANKS IN THE PATTERN, TYPE A `.' AT THE START OF EACH LINE. TYPE `DONE' WHEN FINISHED ENTERING THE PATTERN."
  13. 130 PRINT:PRINT
  14. 140 PRINT "ENTER YOUR PATTERN:"
  15. 150 X1=1:Y1=1:X2=24:Y2=70
  16. 160 DIM A(24,70),B$(24)
  17. 170 C=1
  18. 180 INPUT B$(C)
  19. 190 IF B$(C)="DONE" THEN B$(C)="":GOTO 230
  20. 200 IF LEFT$(B$(C),1)="." THEN B$(C)=" "+RIGHT$(B$(C),LEN(B$(C))-1)
  21. 210 C=C+1
  22. 220 GOTO 180
  23. 230 C=C-1:L=0
  24. 240 FOR X=1 TO C-1
  25. 250 IF LEN(B$(X))>L THEN L=LEN(B$(X))
  26. 260 NEXT X
  27. 270 X1=11-C/2
  28. 280 Y1=33-L/2
  29. 290 FOR X=1 TO C
  30. 300 FOR Y=1 TO LEN(B$(X))
  31. 310 IF MID$(B$(X),Y,1)<>" " THEN A(X1+X,Y1+Y)=1:P=P+1
  32. 320 NEXT Y
  33. 330 NEXT X
  34. 340 PRINT:PRINT:PRINT
  35. 350 PRINT "GENERATION:";G,"POPULATION:";P;:IF I9 THEN PRINT "INVALID";
  36. 360 X3=24:Y3=70:X4=1:Y4=1:P=0
  37. 370 G=G+1
  38. 380 FOR X=1 TO X1-1:PRINT:NEXT X
  39. 390 FOR X=X1 TO X2
  40. 400 PRINT
  41. 410 FOR Y=Y1 TO Y2
  42. 420 IF A(X,Y)=2 THEN A(X,Y)=0:GOTO 500
  43. 430 IF A(X,Y)=3 THEN A(X,Y)=1:GOTO 450
  44. 440 IF A(X,Y)<>1 THEN 500
  45. 450 PRINT TAB(Y);"*";
  46. 460 IF X<X3 THEN X3=X
  47. 470 IF X>X4 THEN X4=X
  48. 480 IF Y<Y3 THEN Y3=Y
  49. 490 IF Y>Y4 THEN Y4=Y
  50. 500 NEXT Y
  51. 510 NEXT X
  52. 520 FOR X=X2+1 TO 24:PRINT :NEXT X
  53. 530 X1=X3:X2=X4:Y1=Y3:Y2=Y4
  54. 540 IF X1<3 THEN X1=3:I9=-1
  55. 550 IF X2>22 THEN X2=22:I9=-1
  56. 560 IF Y1<3 THEN Y1=3:I9=-1
  57. 570 IF Y2>68 THEN Y2=68:I9=-1
  58. 580 P=0
  59. 590 FOR X=X1-1 TO X2+1
  60. 600 FOR Y=Y1-1 TO Y2+1
  61. 610 C=0
  62. 620 FOR I=X-1 TO X+1
  63. 630 FOR J=Y-1 TO Y+1
  64. 640 IF A(I,J)=1 OR A(I,J)=2 THEN C=C+1
  65. 650 NEXT J
  66. 660 NEXT I
  67. 670 IF A(X,Y)=0 THEN 710
  68. 680 IF C<3 OR C>4 THEN A(X,Y)=2:GOTO 700
  69. 690 P=P+1
  70. 700 GOTO 720
  71. 710 IF C=3 THEN A(X,Y)=3:P=P+1
  72. 720 NEXT Y
  73. 730 NEXT X
  74. 740 X1=X1-1:U1=Y1-1:X2=X2+1:Y2=Y2+1
  75. 750 GOTO 350
  76. 760 END
  77.  GOTO 720
  78. 710 IF C=3 THEN A(X,Y)=3:P=